由於主要的工作流都已經大致上完成,因此我今天想要來把圖生圖流程進行調整,讓提示詞和base64編碼都能正確地傳遞給圖片生成模型:
首先我調整了使用者在傳送圖片以後的存儲方式:
首先在接收到圖片,並轉換成base64之後,我先使用function節點判斷該檔案的mime_type,並且將它存到redis的資料庫中,命名為現在的日期與時間(image-yyyy-mm-dd-HH-m)。
接著使用if節點判斷是否有圖片輸入,有的話則使用布林值來表示。
我還分別將圖生圖、文生圖、分析圖片三個工作流結合到同一個工作流,並且用switch節點來將這三個工作流分開:
使用者先前輸入到redis的圖片也會在這裡被取出來,分別會經過獲得所有圖片的名稱(key)、將列表拆開變為多個item、將items以日期由新到舊排序、用limit節點取第一個,也就是最新的、最後再由redis節點取出value,也就是該圖片的base64,最後再判斷要進入哪一道工作流。
從agent的工作流來看的話,就是在進入到agent之後,如果有收到圖片布林值的話,則傳遞0、1、2中的其中一個值來啟用工作流,並一樣接收回傳訊息就好。
這麼做可以保證在傳遞base64的過程不會被語言模型之間的傳遞而被更動,或是訊息傳遞得不完整,也可以讓傳遞之間的token用量減少,畢竟免費額度的速率限制比較多。
以上就是今天做更動的地方,明天我將會繼續來更新這個助手,讓工作流變得更有效率和更加穩定。